package com.livegoods.message;


import com.livegoods.LivegoodsMessage;
import org.springframework.amqp.core.AmqpTemplate;

/**
 * 此类Rabbitmq发送消息队列工具类
 *
 * 里面只有两个发送消息的方法
 * 1，同步发送消息方法
 *    特点：必须能接收方（消费方）执行完毕以后返回响应结果才能行下一步
 * 2，异步发送消息方法
 *
 */
public class LivegoodsMessagePublisher {


    private AmqpTemplate amqpTemplate;

    /**
     * 同步发送消息功能
     * @param exchange  交换机
     * @param routingKey 路由键
     * @param livegoodsMessage  消息，当前场景消息就封装用户账号和商品id，去完成预定功能
     * @return
     */
    public Object sendMessageSync(String exchange, String routingKey, LivegoodsMessage livegoodsMessage){
        Object result = amqpTemplate.convertSendAndReceive(exchange, routingKey, livegoodsMessage);
        return result;
    }


    /**
     * 异步发送消息功能
     * @param exchange  交换机
     * @param routingKey 路由键
     * @param livegoodsMessage  消息，当前场景消息就封装用户账号和商品id，去完成预定功能
     * @return
     */
    public void sendMessageASync(String exchange, String routingKey, LivegoodsMessage livegoodsMessage){
       amqpTemplate.convertAndSend(exchange,routingKey,livegoodsMessage);
    }

    public void setAmqpTemplate(AmqpTemplate amqpTemplate) {
        this.amqpTemplate = amqpTemplate;
    }
}
